<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <title>Test for Bug 341604</title>
  <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<script type="text/javascript">
  function ok(result, desc) {
    window.parent.postMessage({ok: result, desc: desc}, "*");
  }

  function doStuff() {
    // test data URI

    // self.onmessage = function(event) {
    //   self.postMessage('make it so');
    // };
    var data_url = "data:text/plain;charset=utf-8;base64,c2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgeyAgDQogICAgc2VsZi5wb3N0TWVzc2FnZSgnbWFrZSBpdCBzbycpOyAgDQp9Ow==";
    var worker_data = new Worker(data_url);
    worker_data.addEventListener('message', function(event) {
      ok(true, "a worker in a sandboxed document should be able to be loaded from a data: URI");
    }, false);

    worker_data.postMessage("engage!");

    // test a blob URI we created (will have the same null principal
    // as us
    var b = new Blob(["onmessage = function(event) { self.postMessage('make it so');};"]);

    var blobURL = URL.createObjectURL(b);

    var worker_blob = new Worker(blobURL);

    worker_blob.addEventListener('message', function(event) {
      ok(true, "a worker in a sandboxed document should be able to be loaded from a blob URI " +
         "created by that sandboxed document");
    }, false);

    worker_blob.postMessage("engage!");

    // test loading with relative url - this should fail since we are
    // sandboxed and have a null principal
    var worker_js = new Worker('file_iframe_sandbox_worker.js');
    worker_js.onerror = function(error) {
      ok(true, "a worker in a sandboxed document should tell the load error via error event");
    }

    worker_js.addEventListener('message', function(event) {
      ok(false, "a worker in a sandboxed document should not be able to load from a relative URI");
    }, false);

    worker_js.postMessage('engage');
  }
</script>
<body onload='doStuff();'>
  I am sandboxed but with "allow-scripts"
</body>
</html>
